const { defineConfig } = require('@vue/cli-service')
const {resolve, join} = require("node:path");
const webpack = require('webpack')

// element-plus按需导入

console.log(process.env.NODE_ENV)
module.exports = defineConfig({
  publicPath: process.env.NODE_ENV  ===  'production'  ?  './'  :  '/',
  productionSourceMap: false,

  devServer: {
    host: 'localhost',
    port: 8080,
    hot: true,
    historyApiFallback: true,  // 支持HTML5 History API模式
    allowedHosts: 'all',  // 允许所有主机访问（代替 disableHostCheck）
    client: {
      overlay: {
        warnings: false,
        errors: true,  // 显示错误
      }
    },
  },

  transpileDependencies: ['element-plus'],

  pluginOptions: {
    electronBuilder: {
      mainProcessFile: 'src/background.js',  // 主进程文件路径
      builderOptions: {
        appId: 'com.stockmarket.app',
        productName: 'StockMarket',
        win: {
          target: ['nsis'],  // Windows 打包方式（NSIS 安装程序）
          icon: './public/favicon.ico',  // 打包时使用的图标
        },
        mac: {
          icon: './public/favicon.ico',  // macOS 图标
        },
        linux: {
          target: ['AppImage'],  // Linux 打包方式
        },
        files: [
          'dist/**/*',  // Vue 打包输出文件
          'node_modules/**/*',  // 依赖
          'package.json',
          'src/background.js'  // 包含主进程文件
        ]
      }
    }
  },

  configureWebpack: {
    resolve: {
      alias: {
        '@': resolve(__dirname, 'src')
      }
    },
    devtool: 'cheap-module-source-map',
    plugins: [
      new webpack.DefinePlugin({
        // 你可以根据需求将标志值设置为 true 或 false
        __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: JSON.stringify(true), // 或 false
      }),
    ]
  },

  css: {
    loaderOptions: {
      sass: {
        additionalData: `
          @use '@/assets/scss/common.scss' as *;
          @use '@/assets/scss/global.scss' as *;
        `
      }
    }
  },
})
